package com.tmt.paymentcenter.web.domain;

import lombok.Getter;
import lombok.Setter;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import javax.persistence.*;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * 交易记录。
 */
@Getter
@Setter
@Entity
@EntityListeners({AuditingEntityListener.class})
public class TradeHistory extends BaseCreator implements Serializable {

    /**
     * 交易编号,可能存在多条记录有相同的交易编号
     */
    @Column(nullable = false)
    private String tradeCode;

    /**
     * 外部系统订单编号
     */
    @Column(nullable = false)
    private String orderCode;

    /**
     * 订单总价，如果大于amount值，说明交易涉及多个账户。
     */
    @Column(nullable = false)
    private BigDecimal totalPrice;

    /**
     * 订单内容
     */
    private String orderContent;

    /**
     * 支付人
     */
    @ManyToOne(cascade = {CascadeType.REFRESH}, optional = false)
    @JoinColumn(name="outUser_id", nullable = false)
    private TradeUser outUser;

    /**
     * 交易详情记录
     */
    @OneToMany(mappedBy = "tradeHistory", cascade = {CascadeType.REFRESH})
    private List<TradeDetailHistory> tradeDetailHistories;
}
